perm filename UDPCHK.FAI[KID,KMC] blob
sn#122911 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE UDPCHK
;THIS PROGRAM GENERATES 2 FILES:- [ UDPFIL.INT AND UDPFIL.TON ];
;THE PURPOSE OF THESE FILES IS TO CHECK THE UDPFIL PROGRAM.
;THE FILE UDPFIL.INT IS JUST THE INTEGERS FROM 0 TO 20000.
;THE FILE UDPFIL.TON IS A SEQUENCE WHICH SHOULD PLAY BACK AS A TONE.
INTFIL: SIXBIT /UDPFIL/
SIXBIT /INT/
0
0
TONFIL: SIXBIT /UDPFIL/
SIXBIT /TON/
0
0
PDL: BLOCK 11
DIOWD: IOWD 200,BUFFER
0
BUFFER: BLOCK 200
DSKCHN←←15
A←1
B←2
C←3
D←4
P←7
X←10
Y←11
START: INIT DSKCHN,17 ;INIT DISK IN DUMP MODE.
SIXBIT /DSK/
0
JRST [OUTSTR [ASCIZ /I DIE/]
HALT]
MOVE P,[IOWD 7,PDL]
DOINT: ENTER DSKCHN,INTFIL ;CREATE A FILE
JRST [OUTSTR [ASCIZ /RAID IT IF IT REPEATS/]
HALT]
SETZM BUFFER
MOVEI 0,BUFFER+1
HRLI 0,BUFFER
BLT 0,BUFFER+200
MOVEI 0,40000
MOVEM 0,BUFFER
OUTPUT DSKCHN,DIOWD
MOVEI X,0
MOVEI A,200 ;WILL COUNT BUFFERS-FULL
DOIL1: MOVEI B,200 ;WILL COUNT WORDS IN BUFFER.
MOVEI C,0
DOIL2: PUSHJ P,NXTINT ;GET NEXT INTEGER IN D.
MOVEM D,BUFFER(C)
AOJ C, ;BUMP THE WORD POINTER.
SOJN B,DOIL2 ;LOOP UNTIL B=0
OUTPUT DSKCHN,DIOWD ;WRITE THE BUFFER
SOJN A,DOIL1 ;LOOP UNTIL A=0
CLOSE DSKCHN,0 ;UDPFIL.INT IS COMPLETE
DOTON: ENTER DSKCHN,TONFIL ;CREATE A FILE
JRST [OUTSTR [ASCIZ /RAID IT IF IT REPEATS/]
HALT]
SETZM BUFFER
MOVEI 0,BUFFER+1
HRLI 0,BUFFER
BLT 0,BUFFER+200
MOVEI 0,100000
MOVEM 0,BUFFER
OUTPUT DSKCHN,DIOWD
MOVEI X,0
MOVEI Y,0
MOVEI A,400 ;WILL COUNT BUFFERS-FULL
DOTL1: MOVEI B,200 ;WILL COUNT WORDS IN BUFFER.
MOVEI C,0
DOTL2: PUSHJ P,NXTNOT ;GET NEXT NOTE IN D.
MOVEM D,BUFFER(C)
AOJ C, ;BUMP THE WORD POINTER.
SOJN B,DOTL2 ;LOOP UNTIL B=0
OUTPUT DSKCHN,DIOWD ;WRITE THE BUFFER
SOJN A,DOTL1 ;LOOP UNTIL A=0
CLOSE DSKCHN,0 ;UDPFIL.TON IS COMPLETE
RELEAS DSKCHN,0 ;NO MORE I/O
CALL [SIXBIT /EXIT/]
NXTINT: ;ROUTINE TO GET THE NEXT INTEGER.
MOVE D,X
AOJ X,
POPJ P,
NXTNOT: ;ROUTINE TO GET THE NEXT NOTE OF A TONE.
JUMPE X,NOTL5 ;JUMP IF X=0
NOTL1: ;NOTES HAVE BEEN NEGATIVE TO HERE.
JUMPLE Y,NOTL2 ;JUMP IF END OF NEGATIVE NOTES.
MOVE D,NEGNOT ;RESULT IS A NEGATIVE NOTE.
SOJ Y,
POPJ P,
NOTL2: ;END OF NEGATIVE NOTES.
MOVE D,UPSLOP ;THE RISING CROSSING SEQUENCE.
MOVEI Y,=17 ;WILL NEXT DO 51 POSITIVE NOTES.
MOVEI X,0 ;NOW WE ARE IN THE POSITIVE SEQUENCE.
POPJ P,
NOTL5: ;NOTES HAVE BEEN POSITIVE TO HERE.
JUMPLE Y,NOTL6 ;JUMP IF END OF POSITIVE NOTES.
MOVE D,POSNOT ;RESULT IS A POSITIVE NOTE.
SOJ Y,
POPJ P,
NOTL6: ;END OF POSITIVE NOTES.
MOVE D,DNSLOP ;THE FALLING CROSSING SEQUENCE.
MOVEI Y,=17 ;WILL NEXT DO 51 NEGATIVE NOTES.
MOVEI X,1 ;NOW WE ARE IN THE NEGATIVE SEQUENCE.
POPJ P,
NEGNOT: 700070007000
POSNOT: 077707770777
UPSLOP: 740000000377
DNSLOP: 037700007400
END START